package net.zjitc.login.servlet;

import net.zjitc.login.dao.UserDao;
import net.zjitc.login.dao.UserDaoImpl;
import net.zjitc.login.domain.User;
import org.apache.commons.beanutils.BeanUtils;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;

/**
 * @Author Administrator
 * @Date 2020/5/29 8:45
 * 继承、重写2个回方法、注解
 **/
@WebServlet("/registerServlet")
public class RegisterServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        /* 1、设置post请求编码（解决中文乱码问题）
        *  2、获取请求参数（用户输入的内容）
        *  3、若需要，将参数封装成对象
        *  4、调用dao层的方法完成注册功能（添加操作）
        *     简单处理：不考虑用户名是否重复
        *  5、转发/重定向到另一页面，提示注册成功！
        *  */
        req.setCharacterEncoding("utf-8");
        /* 获取所有的请求参数，封装到map*/
        Map<String, String[]> map = req.getParameterMap();
        User user=new User();
        /* 利用BeanUtils工具，将map中数据封装到user对象中
        *  特别注意：map中的key（就是页面上文本框等定义的name值）
        *     要与对象的属性对应*/
        try {
            BeanUtils.populate(user,map);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        UserDao dao=new UserDaoImpl();
        dao.register(user);

        /* 将用户名保存在request域，转发到successServlet*/
        req.setAttribute("user",user.getName());
        req.getRequestDispatcher("/successServlet").forward(req,resp);

    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req,resp);
    }
}
